<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript">
    /*
     *函数function
     *函数也是一个对象
     *函数中可以封装一些功能（代码），在需要时可以执行这些功能（代码） 
     *函数中可以保存一些代码在需要的时候调用
     *使用typeof检查一个函数对象时，会返回function
     */
    //创建一个函数对象
    //可以将要封装的代码以字符串的形式传递给构造函数
    var fun = new Function("console.log('Hello，这是我的第一个函数');");
    console.log(fun);
    
    //封装到函数中的代码不会立即执行
    //函数中的代码会在函数调用的时候执行
    //调用函数 语法:函数对象()
    fun();
    
    //函数对象有普通对象的功能
    fun.world="你好";
    console.log(fun.world);

    //使用函数声明来创建一个函数
    //语法：
    //function 函数名([形参1，形参2，形参3，形参4])
    //{
    //}
    function fun2()
    {
        console.log("这是我的第二个函数~~~");
        document.write("这是我的第二个函数~~~<br>");
        alert("这是我的第二个函数~~~");
    }
    console.log(fun2);//这种情况不属于调用函数
    fun2();//这样属于直接调用函数
    
    //使用函数表达式来创建一个函数
    //var 函数名 = function([形参1，形参2，形参3……])
    //{
    //}
    var fun3 =function()
    {
        document.write("我是匿名函数中封装的代码");
    }
    fun3();
    </script>
</head>
<body>
    
</body>
</html>